Fix ImportError: cannot import name 'json' from 'itsdangerous'
#125
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #124
Inspired from aws-samples/amazon-ecs-mythicalmysfits-workshop#49
Flask changelog (https://flask.palletsprojects.com/en/2.0.x/changes/) :
Version 2.0.3
Released 2022-02-14
The test client’s as_tuple parameter is deprecated and will be removed in Werkzeug 2.1. It is now also deprecated in Flask, to be removed in Flask 2.1, while remaining compatible with both in 2.0.x. Use response.request.environ instead. #4341
Fix type annotation for errorhandler decorator. #4295
Revert a change to the CLI that caused it to hide ImportError tracebacks when importing the application. #4307
app.json_encoder and json_decoder are only passed to dumps and loads if they have custom behavior. This improves performance, mainly on PyPy. #4349
Clearer error message when after_this_request is used outside a request context. #4333
Version 2.0.2
Released 2021-10-04
Fix type annotation for teardown_* methods. #4093
Fix type annotation for before_request and before_app_request decorators. #4104
Fixed the issue where typing requires template global decorators to accept functions with no arguments. #4098
Support View and MethodView instances with async handlers. #4112
Enhance typing of app.errorhandler decorator. #4095
Fix registering a blueprint twice with differing names. #4124
Fix the type of static_folder to accept pathlib.Path. #4150
jsonify handles decimal.Decimal by encoding to str. #4157
Correctly handle raising deferred errors in CLI lazy loading. #4096
The CLI loader handles **kwargs in a create_app function. #4170
Fix the order of before_request and other callbacks that trigger before the view returns. They are called from the app down to the closest nested blueprint. #4229
Version 2.0.1
Released 2021-05-21
Re-add the filename parameter in send_from_directory. The filename parameter has been renamed to path, the old name is deprecated. #4019
Mark top-level names as exported so type checking understands imports in user projects. #4024
Fix type annotation for g and inform mypy that it is a namespace object that has arbitrary attributes. #4020
Fix some types that weren’t available in Python 3.6.0. #4040
Improve typing for send_file, send_from_directory, and get_send_file_max_age. #4044, #4026
Show an error when a blueprint name contains a dot. The . has special meaning, it is used to separate (nested) blueprint names and the endpoint name. #4041
Combine URL prefixes when nesting blueprints that were created with a url_prefix value. #4037
Roll back a change to the order that URL matching was done. The URL is again matched after the session is loaded, so the session is available in custom URL converters. #4053
Re-add deprecated Config.from_json, which was accidentally removed early. #4078
Improve typing for some functions using Callable in their type signatures, focusing on decorator factories. #4060
Nested blueprints are registered with their dotted name. This allows different blueprints with the same name to be nested at different locations. #4069
register_blueprint takes a name option to change the (pre-dotted) name the blueprint is registered with. This allows the same blueprint to be registered multiple times with unique names for url_for. Registering the same blueprint with the same name multiple times is deprecated. #1091
Improve typing for stream_with_context. #4052
Version 2.0.0
Released 2021-05-11
Drop support for Python 2 and 3.5.
Bump minimum versions of other Pallets projects: Werkzeug >= 2, Jinja2 >= 3, MarkupSafe >= 2, ItsDangerous >= 2, Click >= 8. Be sure to check the change logs for each project. For better compatibility with other applications (e.g. Celery) that still require Click 7, there is no hard dependency on Click 8 yet, but using Click 7 will trigger a DeprecationWarning and Flask 2.1 will depend on Click 8.
JSON support no longer uses simplejson. To use another JSON module, override app.json_encoder and json_decoder. #3555
The encoding option to JSON functions is deprecated. #3562
Passing script_info to app factory functions is deprecated. This was not portable outside the flask command. Use click.get_current_context().obj if it’s needed. #3552
The CLI shows better error messages when the app failed to load when looking up commands. #2741
Add sessions.SessionInterface.get_cookie_name() to allow setting the session cookie name dynamically. #3369
Add Config.from_file() to load config using arbitrary file loaders, such as toml.load or json.load. Config.from_json() is deprecated in favor of this. #3398
The flask run command will only defer errors on reload. Errors present during the initial call will cause the server to exit with the traceback immediately. #3431
send_file() raises a ValueError when passed an io object in text mode. Previously, it would respond with 200 OK and an empty file. #3358
When using ad-hoc certificates, check for the cryptography library instead of PyOpenSSL. #3492
When specifying a factory function with FLASK_APP, keyword argument can be passed. #3553
When loading a .env or .flaskenv file, the current working directory is no longer changed to the location of the file. #3560
When returning a (response, headers) tuple from a view, the headers replace rather than extend existing headers on the response. For example, this allows setting the Content-Type for jsonify(). Use response.headers.extend() if extending is desired. #3628
The Scaffold class provides a common API for the Flask and Blueprint classes. Blueprint information is stored in attributes just like Flask, rather than opaque lambda functions. This is intended to improve consistency and maintainability. #3215
Include samesite and secure options when removing the session cookie. #3726
Support passing a pathlib.Path to static_folder. #3579
send_file and send_from_directory are wrappers around the implementations in werkzeug.utils. #3828
Some send_file parameters have been renamed, the old names are deprecated. attachment_filename is renamed to download_name. cache_timeout is renamed to max_age. add_etags is renamed to etag. #3828, #3883
send_file passes download_name even if as_attachment=False by using Content-Disposition: inline. #3828
send_file sets conditional=True and max_age=None by default. Cache-Control is set to no-cache if max_age is not set, otherwise public. This tells browsers to validate conditional requests instead of using a timed cache. #3828
helpers.safe_join is deprecated. Use werkzeug.utils.safe_join instead. #3828
The request context does route matching before opening the session. This could allow a session interface to change behavior based on request.endpoint. #3776
Use Jinja’s implementation of the |tojson filter. #3881
Add route decorators for common HTTP methods. For example, @app.post("/login") is a shortcut for @app.route("/login", methods=["POST"]). #3907
Support async views, error handlers, before and after request, and teardown functions. #3412
Support nesting blueprints. #593, #1548, #3923
Set the default encoding to “UTF-8” when loading .env and .flaskenv files to allow to use non-ASCII characters. #3931
flask shell sets up tab and history completion like the default python shell if readline is installed. #3941
helpers.total_seconds() is deprecated. Use timedelta.total_seconds() instead. #3962
Add type hinting. #3973.
Flask WTF changelog (https://flask-wtf.readthedocs.io/en/1.0.x/changes/) :
Version 1.0.0
Released 2021-11-07
Deprecated items removal #484
Support for alternatives captcha services #425 #342 #387 #384
Version 0.15.1
Released 2021-05-25
Add python_requires metadata to avoid installing on unsupported Python versions. #442
Version 0.15.0
Released 2021-05-24
Drop support for Python < 3.6. #416
FileSize validator. #307, #365
Extra requirement email installs the email_validator package. #423
Fixed Flask 2.0 warnings. #434
Various documentation fixes. #315, #321, #335, #344, #386, #400, #404, #420, #437
Various CI fixes. #405, #438
WTForms changelog (https://github.com/wtforms/wtforms/blob/master/CHANGES.rst)
Version 3.0.1
Released 2021-12-23
Fixed :class:
~fields.DateTimeField
and other similar fields can handle multiple formats. :issue:720
:pr:721
Stop support for python 3.6 :pr:
722
Version 3.0.0
Released 2021-11-07
Fixed :class:
~fields.RadioField
validators. :issue:477
:pr:615
:meth:
~fields.FormField.populate_obj
always calls :func:setattr
:pr:675
WTForms has a new logo. :issue:
569
:pr:689
Fixed :class:
~fields.RadioField
render_kw rendering. :issue:490
:pr:628
:pr:688
Support for optgroups in :class:
~fields.SelectField
and :class:~fields.SelectMultipleField
. :issue:656
:pr:667
Minor documentation fix. :issue:
701
Custom separators for :class:
~fields.FieldList
. :issue:681
:pr:694
:class:
~fields.DateTimeField
, :class:~fields.DateField
and :class:~fields.TimeField
support time formats that removes leading zeros. :pr:703
Refactoring: split fields/core.py and fields/simple.py :pr:
710
Version 3.0.0a1
Released 2020-11-23
Drop support for Python < 3.6. :pr:
554
:class:
~fields.StringField
sets data to None when form data is empty and an initial value was not provided. Although it previously set an empty string, None is consistent with the behavior of other fields. :pr:355
Specified version of Babel required for setup to avoid errors. :pr:
430
Replaced use of getattr/setattr with regular variable access. :issue:
482
:class:
ValueError
raised by a validator are handled like regular exceptions. Validators need to raise :class:~validators.ValidationError
or :class:~validators.StopValidation
to make a validation fail. :issue:445
:class:
~fields.SelectField
, :class:~fields.SelectMultipleField
and :class:~fields.RadioField
choices parameter can be a callable. :pr:608
Choices shortcut for :class:
~fields.core.SelectMultipleField
. :issue:603
:pr:605
Forms can have form-level errors. :issue:
55
:pr:595
Implemented :class:
~wtforms.fields.core.MonthField
. :pr:530
:pr:593
Filters can be inline. :meth:
form.BaseForm.process
takes a extra_filters parameter. :issue:128
:pr:592
Fields can be passed the name argument to use a HTML name different than their Python name. :issue:
205
, :pr:601
Render attribute names like for_ and class_ are normalized consistently so later values override those specified earlier. :issue:
449
, :pr:596
Flags can take non-boolean values. :issue:
406
:pr:467
Widgets are HTML5 by default. :issue:
594
:pr:614
Fixed a bug when the :class:
~wtforms.fields.core.SelectField
choices are list of strings. :pr:598
Error messages standardization. :issue:
613
:pr:620
:pr:626
:pr:627
:class:
~wtforms.fields.core.SelectMultipleField
validate_choice bugfix. :issue:606
:pr:642
Fixed SelectMultipleField validation when using choices list shortcut. :issue:
612
:pr:661